﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SupportLayer.Objetos.Produto
{
	[Table(Constantes.Tabelas.TABELAS.PRODUTO)]
	public class ProdutoClass
	{
		[Column(Constantes.PRODUTO.PRODUTO.ID)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.ID)]
		public Int64 ID { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.MARCA_ID)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.MARCA_ID)]
		public int MarcaID { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.CATEGORIAMASTER_ID)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.CATEGORIAMASTER_ID)]
		public Int16 CategoriaMasterID { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.CATEGORIA_ID)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.CATEGORIA_ID)]
		public int CategoriaID { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.CATEGORIA_SECUNDARIA_ID)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.CATEGORIA_SECUNDARIA_ID)]
		public int CategoriaSecundariaID { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.DIVIDIR_ID)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.DIVIDIR_ID)]
		public Int64 DividirID { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.DIMENSOES_ID)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.DIMENSOES_ID)]
		public Int64 DimensoesID { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.MODELO)]
		[Required, MaxLength(100, ErrorMessage = "O máximo de caracteres para o modelo são 100.")]
		[Display(Name = Constantes.PRODUTO.PRODUTO.MODELO)]
		public string Modelo { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.PRECO)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.PRECO)]
		public decimal Preco { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.FOTO)]
		[Required, MaxLength(100, ErrorMessage = "O máximo de caracteres para a Foto são 200.")]
		[Display(Name = Constantes.PRODUTO.PRODUTO.FOTO)]
		public string Foto { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.DESCRICAO)]
		[Required, MaxLength(2147483647, ErrorMessage = "O máximo de caracteres para o título são 2147483647.")]
		[Display(Name = Constantes.PRODUTO.PRODUTO.DESCRICAO)]
		public string Descricao { get; set; }
		[Column(Constantes.PRODUTO.PRODUTO.DATA)]
		[Display(Name = Constantes.PRODUTO.PRODUTO.DATA)]
		public DateTime Data { get; set; }

		[NotMapped]
		public MarcaClass Marca { get; set; }
		[NotMapped]
		public List<EspecificacaoClass> Especificacoes { get; set; }
		[NotMapped]
		public PromocaoClass Promocao { get; set; }
		[NotMapped]
		public CategoriaClass Categoria { get; set; }
		[NotMapped]
		public CategoriaSecundariaClass CategoriaSecundaria { get; set; }
		[NotMapped]
		public CategoriaMasterClass CategoriaMaster { get; set; }
		[NotMapped]
		public FotosClass Fotos { get; set; }
		[NotMapped]
		public DimensoesClass Dimensoes { get; set; }
		[NotMapped]
		public DividirClass Dividir { get; set; }
	}
}
